library("gapminder")
library("plotly")
library("ggthemes")
library("dplyr")

Example 1

#a) 
g_plot<-ggplot(data=iris, aes(x=Sepal.Length, y=Petal.Length, color=Species))+ 
  geom_point(alpha=0.5) 
ggplotly(g_plot) 
#b) 
iris %>% 
  plot_ly(x = ~Sepal.Length) %>% 
  add_histogram(xbins = list(start=4, end=8, size=1)) 
#c) 
iris %>% 
  plot_ly(x = ~Sepal.Length, y=~Petal.Length, color=~Species) %>% 
  add_markers(marker = list(symbol = "diamond", size = 6)) 
#d) 
iris %>% 
  filter(Sepal.Length>5)%>% 
  count(Species) %>% 
  plot_ly(x = ~Species, y = ~n, hoverinfo = "y") %>% 
  add_bars() 
#e) 
iris %>% 
plot_ly(x = ~Sepal.Length, y=~Petal.Length, color=~Species) %>% 
  add_markers(marker = list(opacity = 0.5)) %>% 
  layout(xaxis = list(title="Sepal Length", showgrid=FALSE), 
         yaxis = list(title="Petal Length"), paper_bgcolor="#ababab") 
#f) 
model<-lm(Petal.Length~Sepal.Length, data=iris) 
iris%>% 
  plot_ly(x = ~Sepal.Length, y=~Petal.Length, color=~Species) %>% 
  add_markers(showlegend = FALSE) %>% 
  add_lines(y = ~fitted(model)) 
#g) 
plot1<- iris %>% 
  plot_ly(x = ~Sepal.Length, y=~Petal.Length, color=~Species) %>% 
  add_markers(marker = list(symbol = "diamond", size = 4))  
plot2<-iris %>% 
  plot_ly(x = ~Sepal.Length, y=~Petal.Length, color=~Species) %>% 
  add_markers(marker = list(symbol = "x", size = 4))  
subplot(plot1, plot2, nrows=2) 

Task 1

#a
plot1 = ggplot(diamonds, aes(x=cut, fill=clarity)) + geom_bar()
ggplotly(plot1)
#b
diamonds %>%
  filter(color %in% c("G", "H", "I", "J")) %>%
  plot_ly(x = ~carat, color = ~color, type = 'histogram', 
           nbinsx = 7) %>%
  layout(xaxis = list(title = 'Carat'), yaxis = list(title = 'Count'), 
         title = 'Histogram dla diamentów o kolorach od G do J')
#b
diamonds %>% filter(color %in% c("G", "H", "I", "J")) %>%
  plot_ly(x = ~carat, color = ~color, type = "histogram", nbinsx = 7)
#c
plot_ly(data = diamonds, x=~carat, y=~price, type="scatter",  marker = list(opacity = 0.5)) %>% add_lines(y = ~predict(lm(price ~carat, data = diamonds))) %>%
  layout(xaxis = list(paper_bgcolor="grey", showgrid = FALSE), yaxis = list(showgrid = FALSE))
## No scatter mode specifed:
##   Setting the mode to markers
##   Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode
## A marker object has been specified, but markers is not in the mode
## Adding markers to the mode...
#d
wykres1 <- plot_ly(data = diamonds, x = ~carat, y = ~color, type = "box")
wykres2 <- plot_ly(data = diamonds, x = ~carat, color = ~color, type = "histogram")
wykres3 <- plot_ly(data = diamonds, x = ~carat, y = ~price, type = "histogram2d")
subplot(wykres1, wykres2, wykres3, nrows = 1, shareX = TRUE, titleX = FALSE)

Example 2

#a) 
iris %>% 
  plot_ly(x = ~Sepal.Length, y = ~Sepal.Width) %>% 
  add_markers(symbol = ~Species, symbols = c("circle-open", "square-open", "star
open"))%>% 
  layout(xaxis = list(title = "Sepal Length"), 
         yaxis = list(title = "Sepal Width")) 
## Warning: The following are not valid symbol codes:
## 'star
## open'
## Valid symbols include:
## '0', '0', 'circle', '100', '100', 'circle-open', '200', '200', 'circle-dot', '300', '300', 'circle-open-dot', '1', '1', 'square', '101', '101', 'square-open', '201', '201', 'square-dot', '301', '301', 'square-open-dot', '2', '2', 'diamond', '102', '102', 'diamond-open', '202', '202', 'diamond-dot', '302', '302', 'diamond-open-dot', '3', '3', 'cross', '103', '103', 'cross-open', '203', '203', 'cross-dot', '303', '303', 'cross-open-dot', '4', '4', 'x', '104', '104', 'x-open', '204', '204', 'x-dot', '304', '304', 'x-open-dot', '5', '5', 'triangle-up', '105', '105', 'triangle-up-open', '205', '205', 'triangle-up-dot', '305', '305', 'triangle-up-open-dot', '6', '6', 'triangle-down', '106', '106', 'triangle-down-open', '206', '206', 'triangle-down-dot', '306', '306', 'triangle-down-open-dot', '7', '7', 'triangle-left', '107', '107', 'triangle-left-open', '207', '207', 'triangle-left-dot', '307', '307', 'triangle-left-open-dot', '8', '8', 'triangle-right', '108', '108', 'triangle-right-open', '208', '208', 'triangle-right-dot', '308', '308', 'triangle-right-open-dot', '9', '9', 'triangle-ne', '109', '109', 'triangle-ne-open', '209', '209', 'triangle-ne-dot', '309', '309', 'triangle-ne-open-dot', '10', '10', 'triangle-se', '110', '110', 'triangle-se-open', '210', '210', 'triangle-se-dot', '310', '310', 'triangle-se-open-dot', '11', '11', 'triangle-sw', '111', '111', 'triangle-sw-open', '211', '211', 'triangle-sw-dot', '311', '311', 'triangle-sw-open-dot', '12', '12', 'triangle-nw', '112', '112', 'triangle-nw-open', '212', '212', 'triangle-nw-dot', '312', '312', 'triangle-nw-open-dot', '13', '13', 'pentagon', '113', '113', 'pentagon-open', '213', '213', 'pentagon-dot', '313', '313', 'pentagon-open-dot', '14', '14', 'hexagon', '114', '114', 'hexagon-open', '214', '214', 'hexagon-dot', '314', '314', 'hexagon-open-dot', '15', '15', 'hexagon2', '115', '115', 'hexagon2-open', '215', '215', 'hexagon2-dot', '315', '315', 'hexagon2-open-dot', '16', '16', 'octagon', '116', '116', 'octagon-open', '216', '216', 'octagon-dot', '316', '316', 'octagon-open-dot', '17', '17', 'star', '117', '117', 'star-open', '217', '217', 'star-dot', '317', '317', 'star-open-dot', '18', '18', 'hexagram', '118', '118', 'hexagram-open', '218', '218', 'hexagram-dot', '318', '318', 'hexagram-open-dot', '19', '19', 'star-triangle-up', '119', '119', 'star-triangle-up-open', '219', '219', 'star-triangle-up-dot', '319', '319', 'star-triangle-up-open-dot', '20', '20', 'star-triangle-down', '120', '120', 'star-triangle-down-open', '220', '220', 'star-triangle-down-dot', '320', '320', 'star-triangle-down-open-dot', '21', '21', 'star-square', '121', '121', 'star-square-open', '221', '221', 'star-square-dot', '321', '321', 'star-square-open-dot', '22', '22', 'star-diamond', '122', '122', 'star-diamond-open', '222', '222', 'star-diamond-dot', '322', '322', 'star-diamond-open-dot', '23', '23', 'diamond-tall', '123', '123', 'diamond-tall-open', '223', '223', 'diamond-tall-dot', '323', '323', 'diamond-tall-open-dot', '24', '24', 'diamond-wide', '124', '124', 'diamond-wide-open', '224', '224', 'diamond-wide-dot', '324', '324', 'diamond-wide-open-dot', '25', '25', 'hourglass', '125', '125', 'hourglass-open', '26', '26', 'bowtie', '126', '126', 'bowtie-open', '27', '27', 'circle-cross', '127', '127', 'circle-cross-open', '28', '28', 'circle-x', '128', '128', 'circle-x-open', '29', '29', 'square-cross', '129', '129', 'square-cross-open', '30', '30', 'square-x', '130', '130', 'square-x-open', '31', '31', 'diamond-cross', '131', '131', 'diamond-cross-open', '32', '32', 'diamond-x', '132', '132', 'diamond-x-open', '33', '33', 'cross-thin', '133', '133', 'cross-thin-open', '34', '34', 'x-thin', '134', '134', 'x-thin-open', '35', '35', 'asterisk', '135', '135', 'asterisk-open', '36', '36', 'hash', '136', '136', 'hash-open', '236', '236', 'hash-dot', '336', '336', 'hash-open-dot', '37', '37', 'y-up', '137', '137', 'y-up-open', '38', '38', 'y-down', '138', '138', 'y-down-open', '39', '39', 'y-left', '139', '139', 'y-left-open', '40', '40', 'y-right', '140', '140', 'y-right-open', '41', '41', 'line-ew', '141', '141', 'line-ew-open', '42', '42', 'line-ns', '142', '142', 'line-ns-open', '43', '43', 'line-ne', '143', '143', 'line-ne-open', '44', '44', 'line-nw', '144', '144', 'line-nw-open', '45', '45', 'arrow-up', '145', '145', 'arrow-up-open', '46', '46', 'arrow-down', '146', '146', 'arrow-down-open', '47', '47', 'arrow-left', '147', '147', 'arrow-left-open', '48', '48', 'arrow-right', '148', '148', 'arrow-right-open', '49', '49', 'arrow-bar-up', '149', '149', 'arrow-bar-up-open', '50', '50', 'arrow-bar-down', '150', '150', 'arrow-bar-down-open', '51', '51', 'arrow-bar-left', '151', '151', 'arrow-bar-left-open', '52', '52', 'arrow-bar-right', '152', '152', 'arrow-bar-right-open
#b) 
iris %>% 
  filter(Sepal.Width > 3.3) %>% 
  plot_ly(x = ~Sepal.Length, y = ~Petal.Length) %>% 
  add_markers(size = ~Petal.Width,  
              color = ~Species,  
              marker = list( sizemode = "diameter")) 
## Warning: `line.width` does not currently support multiple values.
## Warning: `line.width` does not currently support multiple values.
#c)    
gapminder%>% 
  plot_ly(x = ~gdpPercap,y = ~lifeExp)%>% 
  add_markers(size = ~pop, color = ~continent, frame = ~year)%>%  
  animation_opts(frame = 1000, transition = 300, easing = "elastic") %>% 
animation_slider(currentvalue = list(prefix = NULL,  font = list(color = "blue") )  ) %>% 
  layout(xaxis = list(title="Real GDP (millions USD)"),  yaxis = list(title="Life expectancy" ))
## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

Task 2

#a
gapminder %>%
  group_by(continent) %>%
  summarize(mean_gdp = mean(gdpPercap)) %>%
  plot_ly(labels = ~continent, values = ~mean_gdp, type = 'pie', marker = list(colors = RColorBrewer::brewer.pal(length(unique(gapminder$continent)), "Set3")))
#b
plot_ly(data = gapminder, x = ~year, y = ~lifeExp, type = "scatter", mode = "markers",
        color = ~continent, symbol = ~continent, 
        symbols = c("circle-open", "square-open", "star-open", "triangle-left", "diamond-tall"))
#c
gapminder %>%
  plot_ly(x = ~country, y = ~lifeExp, color = ~continent) %>% add_boxplot() %>%
  layout(xaxis = list(title = 'Kraj'), yaxis = list(title = 'srednia długość życia'),
         title = 'Średnia długość życia z interakcją między krajem a kontynentem')